package cn.iocoder.yudao.module.handguard.service.publicitynotice;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.handguard.controller.admin.publicitynotice.vo.*;
import cn.iocoder.yudao.module.handguard.dal.dataobject.publicitynotice.PublicityNoticeDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

/**
 * 通用公示 Service 接口
 *
 * @author 芋道源码
 */
public interface PublicityNoticeService {

    /**
     * 创建通用公示
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createPublicityNotice(@Valid PublicityNoticeCreateReqVO createReqVO);

    /**
     * 更新通用公示
     *
     * @param updateReqVO 更新信息
     */
    void updatePublicityNotice(@Valid PublicityNoticeUpdateReqVO updateReqVO);

    /**
     * 删除通用公示
     *
     * @param id 编号
     */
    void deletePublicityNotice(Long id);

    /**
     * 获得通用公示
     *
     * @param id 编号
     * @return 通用公示
     */
    PublicityNoticeDO getPublicityNotice(Long id);

    /**
     * 获得通用公示列表
     *
     * @param ids 编号
     * @return 通用公示列表
     */
    List<PublicityNoticeDO> getPublicityNoticeList(Collection<Long> ids);

    /**
     * 获得通用公示分页
     *
     * @param pageReqVO 分页查询
     * @return 通用公示分页
     */
    PageResult<PublicityNoticeDO> getPublicityNoticePage(PublicityNoticePageReqVO pageReqVO);

    /**
     * 获得通用公示列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 通用公示列表
     */
    List<PublicityNoticeDO> getPublicityNoticeList(PublicityNoticeExportReqVO exportReqVO);


    /**
     * 获得通用公示列表
     *
     * @param classify 查询条件
     * @return 通用公示列表
     */
    List<PublicityNoticeDO> getCommonList(String classify);

    //资料录入弹窗1、评估额度显示弹窗2
    PublicityNoticeDO getCommonListByIndex(int index);
}
